package com.fcml.pattern.factory.simple;

/**
 * @author fcml
 * @date 2018/11/2
 *
 * 工厂的职责就是生产CountPrice对象。
 * 根据传入的总花费生产出具体的CountPrice对象，对外隐藏生产过程，用户只需要知道生产的结果是一个CountPrice对象。
 */
public class CountPriceFactory {

    public CountPrice createCalPrice(Double totalAmount){
        if (totalAmount > 30000) {              //3000则改为黄金会员计算方式
            return new GoldVip();
        }else if (totalAmount > 20000) {        //类似
            return new SuperVip();
        }else if (totalAmount > 10000) {        //类似
            return new Vip();
        }else {
            return new Normal();
        }
    }


    /**
     * 下面使用静态方法定义一个简单工厂，也称为静态工厂。优点是不需要创建工厂对象就实例化对象，缺点是不能继承。
     */

    //隐藏构造方法
//    private CountPriceFactory(){}

    //根据总金额产生相应CountPrice对象
//    public static CountPrice createCalPrice(Double totalAmount){
//        if (totalAmount > 30000) {              //3000则改为黄金会员计算方式
//            return new GoldVip();
//        }else if (totalAmount > 20000) {        //类似
//            return new SuperVip();
//        }else if (totalAmount > 10000) {        //类似
//            return new Vip();
//        }else {
//            return new Normal();
//        }
//    }
}
